In [1]:
print('Minha primeira aplicação Python!')


Minha primeira aplicação Python!

In [2]:
print('Emanuel Sena!')


Emanuel Sena!

In [5]:
print('Emanuel')
print('Sena')


Emanuel
Sena

In [6]:
print('Emanuel\nSena')


Emanuel
Sena

In [7]:
messagem = 'oi, python'

In [8]:
numero = 5

In [9]:
pi = 3.14

In [10]:
messagem, numero, pi


Out[10]:
('oi, python', 5, 3.14)

In [11]:
type(messagem)


Out[11]:
str

In [12]:
type(numero)


Out[12]:
int

In [13]:
type(pi)


Out[13]:
float

In [14]:
texto1 = 'oi'
texto2 = 'Python'
texto1 + texto2


Out[14]:
'oiPython'

In [15]:
texto1 * 3


Out[15]:
'oioioi'

In [16]:
texto1.upper()


Out[16]:
'OI'

In [17]:
texto = 'python'
texto.capitalize()


Out[17]:
'Python'

In [18]:
entrada = input()


oi python

In [19]:
print(entrada)


oi python

In [22]:
nome = input('Digite seu nome: ')
idade = input('Digite sua idade: ')
print('Seu nome é {} e sua idade é {}.'.format(nome, idade))


Digite seu nome: Emanuel
Digite sua idade: 30
Seu nome é Emanuel e sua idade é 30

In [23]:
x = [1,2,3]
y = [1,2,3]

In [24]:
x == y


Out[24]:
True

In [25]:
x is y


Out[25]:
False

In [30]:
numero = 42
chute = input('Digite um número: ')

if int(chute) == numero:
    print('Você acertou!')
else:
    print('Você errou!')


Digite um número: 42
Você acertou!

In [35]:
# Exercícios - Jogo da adivinhação

print('************************')
print('*  Jogo de Advinhação  *')
print('************************')

numero_secreto = 42

chute = int(input('Digite o seu número: '))

if numero_secreto == chute:
    print('Você Acertou!')
elif numero_secreto < chute:
    print('Você Errou! O seu chute foi maior que o número secreto!')
elif numero_secreto > chute:
    print('Você Errou! O seu chute foi menor que o número secreto!')


************************
*  Jogo de Advinhação  *
************************
Digite o seu número: 42
Você Acertou!

In [40]:
# Exercícios - Jogo com while

print('************************')
print('*  Jogo de Advinhação  *')
print('************************')

numero_secreto = 42
total_de_tentativas = 3
rodada = 1

while (rodada <= total_de_tentativas):
    print('')
    print('Tentativa {} de {}.'.format(rodada, total_de_tentativas))
    chute = int(input('Digite o seu número: '))
    print('Você digitou: ', chute)
    
    acertou = chute == numero_secreto
    maior = chute > numero_secreto
    menor = chute < numero_secreto
    
    if (acertou):
        print('Você Acertou!')
        break
    elif (maior):
        print('Você Errou! O seu chute foi maior que o número secreto!')
    elif (menor):
        print('Você Errou! O seu chute foi menor que o número secreto!')
    
    rodada = rodada + 1

print('')
print('Fim do Jogo!')


************************
*  Jogo de Advinhação  *
************************

Tentativa 1 de 3.
Digite o seu número: 12
Você digitou:  12
Você Errou! O seu chute foi menor que o número secreto!

Tentativa 2 de 3.
Digite o seu número: 44
Você digitou:  44
Você Errou! O seu chute foi maior que o número secreto!

Tentativa 3 de 3.
Digite o seu número: 42
Você digitou:  42
Você Acertou!

Fim do Jogo!

In [42]:
for rodada in range(1,5):
    print(rodada)


1
2
3
4

In [43]:
for rodada in range(1,10,2):
    print(rodada)


1
3
5
7
9

In [44]:
for rodada in [1,2,3,4,5]:
    print(rodada)


1
2
3
4
5

In [50]:
# Exercícios - Utilizando o for no jogo

print('************************')
print('*  Jogo de Advinhação  *')
print('************************')

numero_secreto = 42
total_de_tentativas = 0

print('')
print('Escolha o nível: 1 (fácil), 2 (médio), ou 3 (difícil)!')
nivel = int(input('Digite o nível: '))
print('')

if (nivel == 1):
    total_de_tentativas = 20
elif (nivel == 2):
    total_de_tentativas = 10
elif (nivel == 3):
    total_de_tentativas = 5
    
for rodada in range(1, total_de_tentativas + 1):
    print('')
    print('Tentativa {} de {}.'.format(rodada, total_de_tentativas))
    chute = int(input('Digite o seu número: '))
    print('Você digitou: ', chute)
    
    acertou = chute == numero_secreto
    maior = chute > numero_secreto
    menor = chute < numero_secreto
    
    if (acertou):
        print('Você Acertou!')
        break
    elif (maior):
        print('Você Errou! O seu chute foi maior que o número secreto!')
    elif (menor):
        print('Você Errou! O seu chute foi menor que o número secreto!')

print('')
print('Fim do Jogo!')


************************
*  Jogo de Advinhação  *
************************

Escolha o nível: 1 (fácil), 2 (médio), ou 3 (difícil)!
Digite o nível: 3


Tentativa 1 de 5.
Digite o seu número: 1
Você digitou:  1
Você Errou! O seu chute foi menor que o número secreto!

Tentativa 2 de 5.
Digite o seu número: 2
Você digitou:  2
Você Errou! O seu chute foi menor que o número secreto!

Tentativa 3 de 5.
Digite o seu número: 3
Você digitou:  3
Você Errou! O seu chute foi menor que o número secreto!

Tentativa 4 de 5.
Digite o seu número: 4
Você digitou:  4
Você Errou! O seu chute foi menor que o número secreto!

Tentativa 5 de 5.
Digite o seu número: 5
Você digitou:  5
Você Errou! O seu chute foi menor que o número secreto!

Fim do Jogo!

In [3]:
print('************************************')
print('***  Bem Vindo ao Jogo da Forca  ***')
print('************************************')

palavra_secreta = 'banana'
letras_acertadas = ['_', '_', '_', '_', '_', '_']

acertou = False
enforcou = False
erros = 0

print(letras_acertadas)

while (not acertou and not enforcou):
    chute = input('\nQual letra? ')
    
    if (chute in palavra_secreta):
        posicao = 0
        for letra in palavra_secreta:
            if (chute.upper() == letra.upper()):
                letras_acertadas[posicao] = letra
            posicao += 1
    else:
        erros += 1
        
    acertou = '_' not in letras_acertadas
    enforcou = erros == 6
        
    print(letras_acertadas)

print()

if (acertou):
    print('Você ganhou!!')
else:
    print('Você perdeu!!')

print()
print('Fim do Jogo!')


************************************
***  Bem Vindo ao Jogo da Forca  ***
************************************
['_', '_', '_', '_', '_', '_']

Qual letra? a
['_', 'a', '_', 'a', '_', 'a']

Qual letra? b
['b', 'a', '_', 'a', '_', 'a']

Qual letra? n
['b', 'a', 'n', 'a', 'n', 'a']

Você ganhou!!

Fim do Jogo!

In [10]:
lista = ['zero', 'um']
lista.extend(['dois', 'três'])
lista += ['quatro', 'cinco']
lista.append('sete')
lista + ['seis']


Out[10]:
['zero', 'um', 'dois', 'três', 'quatro', 'cinco', 'sete', 'seis']

In [8]:
dias = ('domingo', 'segunda')
type(dias)


Out[8]:
tuple

In [9]:
dias2 = 'domingo', 'segunda'
type(dias2)


Out[9]:
tuple

In [14]:
lista = [3, 4]
tupla = (1, 2, lista)
tupla
lista = [4, 4]
tupla


Out[14]:
(1, 2, [3, 4])

Funções


In [15]:
def velocidade(espaco, tempo):
    v = espaco / tempo
    print('velocidade: {} m/s'.format(v))

In [16]:
velocidade(100, 32)


velocidade: 3.125 m/s

In [17]:
def diz_oi():
    print('oi')

In [18]:
diz_oi()


oi

In [19]:
def dados(nome, idade=None):
    print('nome: {}'.format(nome))
    
    if (idade is not None):
        print('idade: {}'.format(idade))
    else:
        print('idade: não informada')

In [20]:
dados('Emanuel')


nome: Emanuel
idade: não informada

In [23]:
def velocidade(espaco, tempo):
    v = espaco / tempo
    return v

In [26]:
resultado = velocidade(1000, 23)
resultado


Out[26]:
43.47826086956522

In [27]:
def calculadora(x, y):
    return x+y, x-y

In [28]:
calculadora(10, 5)


Out[28]:
(15, 5)

In [29]:
type(calculadora(10, 5))


Out[29]:
tuple

In [30]:
def calculadora(x, y):
    return {'soma':x+y, 'subtração':x-y}

In [31]:
resultados = calculadora(10, 4)
for key in resultados:
    print('{}:{}'.format(key, resultados[key]))


soma:14
subtração:6

In [37]:
def velocidade_media(distancia, tempo):
    velocidade = distancia / tempo
    return velocidade

In [38]:
velocidade_media(100, 20)


Out[38]:
5.0

In [39]:
velocidade_media(150, 22)


Out[39]:
6.818181818181818

In [40]:
velocidade_media(200, 30)


Out[40]:
6.666666666666667

In [41]:
velocidade_media(50, 3)


Out[41]:
16.666666666666668

In [42]:
def soma(x, y):
    return x+y

In [43]:
def subtracao(x, y):
    return x-y

In [45]:
def calculadora(x, y):
    return x+y, x-y, x*y, x/y

In [46]:
calculadora(10,5)


Out[46]:
(15, 5, 50, 2.0)

In [47]:
def divisao(x, y):
    return x/y

In [48]:
def velocidade_media(distancia, tempo):
    return divisao(distancia, tempo)

In [50]:
velocidade_media(100,20)


Out[50]:
5.0

In [51]:
velocidade_media(-20, 10)


Out[51]:
-2.0

In [53]:
velocidade_media(150, 0) # error


---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-53-aade1df0db33> in <module>
----> 1 velocidade_media(150, 0) # error

<ipython-input-48-c9e272da1711> in velocidade_media(distancia, tempo)
      1 def velocidade_media(distancia, tempo):
----> 2     return divisao(distancia, tempo)

<ipython-input-47-06399259d98a> in divisao(x, y)
      1 def divisao(x, y):
----> 2     return x/y

ZeroDivisionError: division by zero

In [58]:
def teste(arg, *args):
    print('primeiro argumento normal: {}'.format(arg))
    for variavel in args:
        print('outro argumento: {}'.format(variavel))

In [59]:
teste('python', 'é', 'muito', 'legal')


primeiro argumento normal: python
outro argumento: é
outro argumento: muito
outro argumento: legal

In [61]:
lista = ['é', 'muito', 'legal']
teste('python', *lista)


primeiro argumento normal: python
outro argumento: é
outro argumento: muito
outro argumento: legal

In [62]:
def minha_funcao(**kwargs):
    for key, value in kwargs.items():
        print('{} = {}'.format(key, value))

In [63]:
minha_funcao(nome='emanuel')


nome = emanuel

In [65]:
dicionario = {'nome':'dario', 'idade':22}
minha_funcao(**dicionario)


nome = dario
idade = 22

In [1]:
def test_args_kwargs(arg1, arg2, arg3):
    print('arg1: ', arg1)
    print('arg2: ', arg2)
    print('arg3: ', arg3)

In [4]:
args = ('um', 2, 3)
test_args_kwargs(*args)


arg1:  um
arg2:  2
arg3:  3

In [6]:
kwargs= {'arg3': 3, 'arg2':'dois', 'arg1':'um'}
test_args_kwargs(**kwargs)


arg1:  um
arg2:  dois
arg3:  3

In [7]:
kwargs= {'arg3': 3, 'arg2':'dois', 'arg1':'um', 'arg4':4}
test_args_kwargs(**kwargs)


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-7-f2773ea9aa69> in <module>
      1 kwargs= {'arg3': 3, 'arg2':'dois', 'arg1':'um', 'arg4':4}
----> 2 test_args_kwargs(**kwargs)

TypeError: test_args_kwargs() got an unexpected keyword argument 'arg4'

In [8]:
args = ('um', 2, 3, 4)
test_args_kwargs(*args)


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-59dba3559bf9> in <module>
      1 args = ('um', 2, 3, 4)
----> 2 test_args_kwargs(*args)

TypeError: test_args_kwargs() takes 3 positional arguments but 4 were given

In [1]:
# Sometimes need restart kernel for import work
import forca

In [2]:
forca.jogar()


************************************
***  Bem Vindo ao Jogo da Forca  ***
************************************
['_', '_', '_', '_', '_', '_']

Qual letra? a
['_', 'a', '_', 'a', '_', 'a']

Qual letra? b
['b', 'a', '_', 'a', '_', 'a']

Qual letra? n
['b', 'a', 'n', 'a', 'n', 'a']

Você ganhou!!

Fim do Jogo!

In [3]:
type(forca)


Out[3]:
module

In [4]:
arquivo = open('palavras.txt', 'w')

arquivo.write('banana\n')
arquivo.write('melancia\n')
arquivo.write('morango\n')
arquivo.write('manga\n')

arquivo.close()

In [9]:
arquivo = open('palavras.txt', 'r')

for linha in arquivo:
    print(linha)
    
arquivo.close()


banana

melancia

morango

manga


In [10]:
arquivo = open('palavras.txt', 'r')

linha = arquivo.readline()

arquivo.close()

linha


Out[10]:
'banana\n'

In [11]:
arquivo = open('palavras.txt', 'r')
palavras = []

for linha in arquivo:
    linha = linha.strip()
    palavras.append(linha)
    
arquivo.close()

palavras


Out[11]:
['banana', 'melancia', 'morango', 'manga']

In [12]:
import random

In [13]:
random.randrange(0, 4)


Out[13]:
1

In [5]:
import forca

In [6]:
forca.jogar()


************************************
***  Bem Vindo ao Jogo da Forca  ***
************************************
['_', '_', '_', '_', '_', '_', '_']

Qual letra? d
['_', '_', '_', '_', '_', '_', '_']

Qual letra? s
['_', '_', '_', '_', '_', '_', '_']

Qual letra? a
['_', '_', '_', 'A', '_', '_', '_']

Qual letra? f
['_', '_', '_', 'A', '_', '_', '_']

Qual letra? g
['_', '_', '_', 'A', '_', 'G', '_']

Qual letra? y
['_', '_', '_', 'A', '_', 'G', '_']

Qual letra? j
['_', '_', '_', 'A', '_', 'G', '_']

Qual letra? c
['_', '_', '_', 'A', '_', 'G', '_']

Qual letra? v
['_', '_', '_', 'A', '_', 'G', '_']

Puxa, você foi enforcado!
A palavra era MORANGO
    _______________         
   /               \        
  /                 \       
//                   \/\    
\|   XXXX     XXXX   | /    
 |   XXXX     XXXX   |/     
 |   XXX       XXX   |      
 |                   |      
 \__      XXX      __/      
   |\     XXX     /|        
   | |           | |        
   | I I I I I I I |        
   |  I I I I I I  |        
   \_             _/        
     \_         _/          
       \_______/            

Fim do Jogo!

In [1]:
from conta import Conta

In [2]:
conta1 = Conta('123-4', 'João', 120.0, 1000.0)


inicializando uma conta

In [3]:
type(conta)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-3-30596976849e> in <module>
----> 1 type(conta)

NameError: name 'conta' is not defined

In [4]:
conta1.titular


Out[4]:
'João'

In [5]:
conta1.extrato()


numero: 123-4 
saldo: 120.0

In [6]:
conta1.deposita(100.0)

In [7]:
conta1.extrato()


numero: 123-4 
saldo: 220.0

In [8]:
consegui = conta1.saca(25)

if (consegui):
    print('consegui sacar')
else:
    print('não consegui sacar')


consegui sacar

In [9]:
conta1.extrato()


numero: 123-4 
saldo: 195.0

Objetos são acessados por referência


In [15]:
from conta import Conta

In [16]:
c1 = Conta('123-4', 'João', 120.0, 1000.0)


inicializando uma conta

In [17]:
c2 = c1

In [18]:
c2.extrato()


numero: 123-4 
saldo: 120.0

In [19]:
c1.deposita(100.0)
c1.extrato()


numero: 123-4 
saldo: 220.0

In [20]:
c2.deposita(30.0)
c2.extrato()


numero: 123-4 
saldo: 250.0

In [21]:
id(c1)


Out[21]:
2183148418944

In [22]:
id(c2)


Out[22]:
2183148418944

In [23]:
id(c1) == id(c2)


Out[23]:
True

In [24]:
c1 == c2


Out[24]:
True

In [25]:
c1.historico.imprime()


data abertura: 2019-09-19 11:02:24.893384
transações: 
- tirou extrato - saldo de 120.0
- depósito de 100.0
- tirou extrato - saldo de 220.0
- depósito de 30.0
- tirou extrato - saldo de 250.0

In [26]:
c1 = Conta("123-4", "Python", 500.0, 1000.0)
c2 = Conta("123-4", "Python", 500.0, 1000.0)


inicializando uma conta
inicializando uma conta

In [27]:
c1 == c2


Out[27]:
False

Modificadores de acesso e métodos de classe


In [1]:
class Pessoa:
    def __init__(self, idade):
        self.__idade = idade

In [2]:
pessoa = Pessoa(idade=20)

In [3]:
pessoa.idade


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-3-be00b9273605> in <module>
----> 1 pessoa.idade

AttributeError: 'Pessoa' object has no attribute 'idade'

In [7]:
pessoa._Pessoa__idade


Out[7]:
20

In [8]:
dir(pessoa)


Out[8]:
['_Pessoa__idade',
 '__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__']

In [27]:
class Conta:
    
    total_de_contas = 0
    
    def __init__(self, saldo=0.0):
        self._saldo = saldo
        Conta.total_de_contas += 1
    
    @property
    def saldo(self):
        return self._saldo
    
    @saldo.setter
    def saldo(self, saldo):
        if (saldo < 0):
            print('saldo não pode ser negativo')
        else:
            self._saldo = saldo

In [28]:
conta1 = Conta(10)

In [29]:
conta1.saldo


Out[29]:
10

In [30]:
conta1.saldo = -1


saldo não pode ser negativo

In [31]:
conta1.total_de_contas


Out[31]:
1

In [32]:
conta2 = Conta(101)

In [33]:
conta2.total_de_contas


Out[33]:
2

In [1]:
# Testing Recoding Tool

In [2]:
# Testing Another Recording Tool

In [ ]: